package com.broada.apm;

import org.apache.wink.client.ClientConfig;

/**
 * 系统常量定义
 * @author jianfei.xu
 * @date   2016年9月20日
 */
public interface Constants {

	public int thriftConnTimeOut = 10 * 1000; //thrift连接超时(单位:毫秒)
	
	public int thriftReadTimeout = 10 * 1000; //thrift读取超时(单位:毫秒)
	
	public int thriftValidateReadTimeout = 5 * 1000; //thrift验证连接读取超时(单位:毫秒)
	
	public int httpConnTimeout = 10 * 1000; //http连接超时(单位:毫秒)
	
	public int httpReadTimeout = 10 * 1000; //http读取超时(单位:毫秒)
	
	public int collectDelayReportTime = 20 * 1000; //collect延迟上报时间(单位:毫秒)
	
	public int hubSampleDelayTime = Constants.collectDelayReportTime + Constants.thriftConnTimeOut + Constants.thriftReadTimeout; //hub延迟采集时间(单位:毫秒)
	
	public int hubSampleMaxOffsetTime = hubSampleDelayTime; //hub采集最大延迟时间(单位:毫秒)
	
	public int collectSampleMaxOffsetTime = hubSampleDelayTime; //collect采集最大延迟时间(单位:毫秒)
	
	public int collectMaxExceedTime = hubSampleDelayTime + 1000; //collect采集数据, 最大超时时间(单位:毫秒)
	
	public int thriftServerTimeOut = thriftConnTimeOut + thriftReadTimeout + 5 * 1000; //thrift服务端超时(单位:毫秒)
	
	public int timeBetweenEvictionRunsMillis = (thriftConnTimeOut + thriftReadTimeout) * 10; //thrift连接池空闲检查(单位:毫秒)
	
	public int httpBatchSize = 500; //http批量发送大小
	
	public int thriftBatchSize = 1500; //thrift批量发送大小
	
	public int maxRetryTimesWhenValidateTimeOut = 2; //超时时最大验证次数
	
	public ClientConfig httpClientConfig = new ClientConfig() { //http客户端配置
		{
			connectTimeout(Constants.httpConnTimeout);
			readTimeout(Constants.httpReadTimeout); 
		}
	};
	
}
